import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from pprint import pprint


class TestCase:
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://www.baidu.com')

    def id(self):
        # 通过id定位元素
        # 获取标签对象：webelement.get_attribute(param)
        # 获取标签源代码：param:outerHTML
        kw = self.driver.find_element(By.ID, 'kw')
        print(kw.get_attribute('outerHTML'))

        su = self.driver.find_element(By.ID, 'su')
        print(su.get_attribute('outerHTML'))

    def class_name(self):
        # 通过标签的class属性定位元素By.CLASS_NAME
        kw = self.driver.find_element(By.CLASS_NAME, 's_ipt')
        print(kw.get_attribute('outerHTML'))

    def link_test(self):
        # 通过链接文本定位元素
        news = self.driver.find_element(By.LINK_TEXT, '新闻')
        print(news.get_attribute('outerhtml'))

    def partial_link_test(self):
        # 通过部分链接文本定位元素
        hao123 = self.driver.find_element(By.PARTIAL_LINK_TEXT, 'hao')
        print(hao123.get_attribute('outerHTML'))

    def tag_name(self):
        # 通过标签名定位元素
        # driver.find_element() 定位到页面的第一个元素--input--
        ipt = self.driver.find_element(By.TAG_NAME, 'input')
        print(ipt.get_attribute('outerHTML'))

        # driver.find_elements() 定位到页面所有的--input--元素,一个列表
        ipts = self.driver.find_elements(By.TAG_NAME, 'input')
        pprint(ipts)
        print(len(ipts))
        print(ipts[7].get_attribute('outerHTML'))

    def name(self):
        # 通过name属性定位元素
        ie = self.driver.find_element(By.NAME, 'ie')
        print(ie.get_attribute('outerHTML'))

    def about_error(self):
        # driver.find_element() 匹配不到会抛出异常
        # self.driver.find_element(By.ID,'abc')

        # driver.find_element()
        print(self.driver.find_element(By.CLASS_NAME, 'abcabc'))

    def quit(self):
        time.sleep(2)
        self.driver.quit()


if __name__ == '__main__':
    case = TestCase()
    # case.id()
    # case.class_name()
    # case.link_test()
    # case.partial_link_test()
    # case.tag_name()
    # case.tag_name()
    case.about_error()
    case.quit()



